<?php
class Application_Model_Usuario
{
    //listando todos os usuarios
    public function listaAllUsuarios ()
    {
        $usuario = new Application_Model_DbTable_Usuario();
        $sql = "SELECT u.idusuario as idusuario, 
        				  u.nome as nome, 
        				  u.login as login, 
        				  g.nome as perfil 
        		  FROM usuario as u, perfil_usuario as g
        		  WHERE u.idperfil = g.idperfil
        		  ORDER BY idusuario DESC ";
       $result =  $usuario->getAdapter()->fetchAll($sql);
       return $result;
    }
    // inserindo novo usuário
    public function addUsuario ($nome, $login, $senha, $idperfil,$email)
    {
        $data = array('nome' => $nome, 'login' => trim($login), 'senha' => sha1($senha), 
        'idperfil' => $idperfil,'email'=>$email);
        $usuario = new Application_Model_DbTable_Usuario();
        $usuario->insert($data);
    }
    
    // atualizar usuário
    public function update ($idusuario, $nome,$idgrupo,$email)
    {
        $usuario = new Application_Model_DbTable_Usuario();
        $data = array('nome' => $nome,'idperfil'=>$idgrupo,'email'=>$email);
        $where = $usuario->getAdapter()->quoteInto('idusuario=?', $idusuario);
        $usuario->update($data, $where);
    }
    
    // procura por id
    public function procura ($idusuario)
    {
        $usuario = new Application_Model_DbTable_Usuario();
        $where = $usuario->getAdapter()->quoteInto('idusuario=?', $idusuario);
        $rusuario = $usuario->fetchRow($where);
        return $rusuario->toArray();
    }
    
    // excluindo usuário
    public function excluirUsuario ($idusuario)
    {
        $usuario = new Application_Model_DbTable_Usuario();
        $id = (int) $idusuario;
        $where = $usuario->getAdapter()->quoteInto('idusuario=?', $id);
        $usuario->delete($where);
    }
    
    // resetar senha usuário
    public function resetarSenha($idusuario)
    {
    	$usuario = new Application_Model_DbTable_Usuario();
        $data = array('senha' => sha1('sendmail'));
        $where = $usuario->getAdapter()->quoteInto('idusuario=?', $idusuario);
        $usuario->update($data, $where);
    }
    /**
     * Alterar senha do usuário
     * @param int $idusuario
     * @param string $novaSenha
     */
    public function changePassword($idusuario,$novaSenha)
    {
    	$usuario = new Application_Model_DbTable_Usuario();
        $data = array('senha' => $novaSenha);
        $where = $usuario->getAdapter()->quoteInto('idusuario=?', $idusuario);
        $usuario->update($data, $where);
    }
    /**
     * Procura por um usuario por email
     * @param string $email
     * @return Ambigous <multitype:, array>
     */
    public function findByEmail($email)
    {
        $tb = new Application_Model_DbTable_Usuario();
        $select = $tb->select()
            ->setIntegrityCheck(false)
            ->from(array('u' => 'usuario'))
            ->where($tb->getAdapter()->quoteInto('u.email = ?', $email));  
            $return = $tb->fetchRow($select);
        return $return;
    }
}

